# list[]    列表
from numbers import Number

from pycparser.ply.yacc import resultlimit

animal = ['elephant','monkey','snake','tiger']    # 创建列表animal
print(animal)     # 打印animal

# index 列表索引
animal[0]  # 访问列表索引为0的元素

stu_1=['001','Wang',98]   # 使用数据赋值创建列表stu_1
stu_2 =stu_1      # stu_2 是·stu_1所对应数据的应用
print(stu_1,stu_2)   # 输出stu_1和stu_2
stu_1[0] = '002'     # 修改元素stu_1[0]的值为'002'
print(stu_1,stu_2)   # 输出stu_1和stu_2

# while 循环遍历数组

animal = ['elephant','monkey','snake','tiger']   #  创建列表  animal
length = len(animal)     # 获取列表长度
i = 0    # 循环遍历 i 初值为0
while i < length:     # 当 i 小于length 时循环
    print(animal[i])        # 输出列表的元素
    i +=1          # 循环变量加1

# for 循环遍历列表

animal = ['elephant','monkey','snake','tiger']   # 创建列表animal
for name in animal:      # 将要遍历的列表作为for循环表达式中的序列
    print(name)          # 输出 name

# 增加元素  append()  extend() insert()

list_1=[1,2,3]    # 创建列表list_1并赋值
list_2=[4,5,6]    # 创建列表list_2并赋值
list_3=[7,8,9]    # 创建列表list_3并赋值
list_1.append(list_2)  # 将list_2看作一个对象，整体打包添加到list_1对象
print(list_1)       # 输出list_1
list_2.extend(list_3)  # 将list_3看作一个序列，将这个序列和list_2序列合并
print(list_2)

numbers=[1,2,3,5,6]  # 创建列表并赋值
numbers.insert(3,4)  # 使用insert()方法将元素3添加到列表索引为2的位置中
print(numbers)   # 打印number

# 查找元素与计数
animal = ['elephant','monkey','snake','tiger']   # 创建列表animal
x = input('请输入要查找的动物名称:')        # 输入要查找的元素
if x in animal:         # 查找元素是否存在
    a = animal.index(x)  # 返回索引
    print('元素{0}在列表中的索引为:{1}'.format(x,a))    # 输出索引号
else:
    print('列表中不存在该元素')     # 输出未找到信息

# count()   统计
x = [1,2,1,2,3,2,1,1]   # 创建列表
print(x.count(1))       # 使用count()方法统计1在变量x中出现的次数

# 删除元素 del pop remove
number = [1,2,3,4,6]     # 创建列表number并赋值
del number[1:3]    # 使用del命令删除索引从1到3的元素
print(number)    # 打印number

number.pop(0)   # 删除索引0的元素

x = ['123','abc','xyz','abc','python']  # 创建列表x并赋值
while 'abc' in x:      # 循环
    x.remove('abc')   # 使用remove()方法删除x中匹配元素的值
print(x)      # 输出x

# 分片赋值
x = [1,2,3,4]   # 创建列表并赋值
print(x)        # 打印列表
x[2:]=[5,6,7]   # 替换变量从索引2之后所有元素
print(x)        # 打印索引

x = [1,7]       # 创建列表并赋值
x[1:1] = [2,3,4,5,6]  # 在变量x中索引为1的位置插入[2,3,4,5,6]
print(x)        # 打印列表

# 删除元素
x =[1,2,3,4,5,6,7]  # 创建列表并赋值
x[1:6] = []   # 将空列表替换索引1到6之间的元素
print(x)      # 打印变量x

# 列表排序  reverse()  将列表中的元素方向存放

x = [1,2,3,4]     # 创建列表并赋值
x.reverse()         # 使用reserve()方法将变量x中的元素方向存放
print(x)          # 打印变量x

# sort()  升序排列     list.sort[key = None][,reserve=False]

x= [3,1,2,4,5]   # 创建列表并赋值
x.sort()         # 使用sort()方法对变量x中的元素进行升序排列
print(x)         # 输出列表x

X= ['a','abc','ab','abcd']    # 创建列表并赋值
X.sort(key=len,reverse=True)  # 使用sort()方法对变量x中的元素进行长度逆序排序
print(x)                      # 输出列表x

# sorted() 函数  内置函数sorted 返回新的列表不影响原列表

x = [1,5,3,2,4]       # 创建列表并赋值
y = sorted(x)         # 将x中的元素升序排序后赋值给变量y
print(x)              # 输出x
print(y)              # 输出y

# 元组 tuple()

x = ('a',1,3.14)     # 创建元组x
print(x[0])          # 输出元组索引为0的元素
print(x[1])
print(x[2])

# 元组合并
x = (1,2,3)       # 创建元组x
y = ('a','b')     # 创建元组y
z = x+y           # 将元组x和y进行连接拼接组合后赋值给z
z                 # 输出z

# 元组的遍历
x  = (1,2,3,4,5)  # 创建元组x
for n in x:       # 循环
    print(n,'',end='' )      # 输出元素

# tuple()  以一个序列为参数，把他转化为元组
tuple([1,2,3])    # 将列表转化为元组

tuple('abc')      # 将字符串转换为元组

tuple((1,2,3))    # 参数为元组

# 简易计算器

operator_list= ['+','-','*','/']    # 创建列表并赋值四则运算
number_1  = float(input('请输入第一个操作数:'))   # 获取第一个操作数
operator  = input('请输入运算符:')        # 获取运算符
number_2=float(input('请输入第二个操作数:'))   # 获取第二个操作数
# 判断用户输入的运算符并进行计算，将结果赋值给变量result
if operator not in operator_list:     # 输入的运算符不是四则运算符
    print('输入的运算符有误，请输入四则运算符!')  # 输出提示语
else:
    if operator == '+':       # 运算符为 '+'
        result = number_1 +number_2           # 两数相加的值赋给变量result
    elif operator == '-':            # 运算符为'-'
        result = number_1-number_2   # 两数相减的值赋给变量result
    elif operator == '*':            # 两数相乘的值给变量result
        result = number_1*number_2   # 两数相乘的值给变量result
    elif operator =='/':             # 两数相除的值给变量result
        result = number_1/number_2
    print(number_1,operator,number_2,'=',result)  #两个操作数运算结果输出

# 矩阵相加

X = [[12,7,3],[4,5,6],[7,8,9]]   # 定义矩阵X
Y = [[5,8,1],[6,7,3],[4,5,9]]    # 定义矩阵Y
result = [[0,0,0],[0,0,0],[0,0,0]]  # 定义新的矩阵
for i in range(len(X)):          # 循环控制行
    for j in range(len(X[0])):   # 循环控制列
        result[i][j] = X[i][j]+Y[i][j]    # 计算新矩阵的元素值
    for r in result:             # 遍历输出新矩阵中的元素
        print(r)